package com.example.tempfiles; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.util.Arrays; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.imageio.IIOException; public class Main { public static void main(String[] args) throws IOException { Main main = new Main(); main.createTempFileOldWay(); main.createTempFileWithDirOldWay(); main.createTempFile(); main.createTempFileWithDir(); main.createTempFileShutdownHook(); main.createTempFileDeleteOnExit(); main.createTempFileDeleteOnClose(); } private void createTempFileOldWay() throws IOException { File tempFile = File.createTempFile("tempfile-old", ".tmp"); PrintWriter writer = null; try { writer = new PrintWriter(new FileWriter(tempFile)); writer.println("Line1"); writer.println("Line2"); } finally { if (writer != null) { writer.close(); } } System.out.printf("Wrote text to temporary file %s%n", tempFile.toString()); } private void createTempFileWithDirOldWay() throws IOException { File tempDir = new File(System.getProperty("java.io.tmpdir", null), "tempdir-old"); if (!tempDir.exists() && !tempDir.mkdir()) { throw new IIOException("Failed to create temporary directory " + tempDir); } File tempFile = File.createTempFile("tempfile-old", ".tmp", tempDir); PrintWriter writer = null; try { writer = new PrintWriter(new FileWriter(tempFile)); writer.println("Line1"); writer.println("Line2"); } finally { if (writer != null) { writer.close(); } } System.out.printf("Wrote text to temporary file %s%n", tempFile.toString()); } private void createTempFile() throws IOException { Path tempFile = Files.createTempFile("tempfiles", ".tmp"); List<String> lines = Arrays.asList("Line1", "Line2"); Files.write(tempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE); System.out.printf("Wrote text to temporary file %s%n", tempFile.toString()); } private void createTempFileWithDir() throws IOException { Path tempDir = Files.createTempDirectory("tempfiles"); Path tempFile = Files.createTempFile(tempDir, "tempfiles", ".tmp"); List<String> lines = Arrays.asList("Line1", "Line2"); Files.write(tempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE); System.out.printf("Wrote text to temporary file %s%n", tempFile.toString()); } private void createTempFileShutdownHook() throws IOException { final Path tempFile = Files.createTempFile("tempfiles-shutdown-hook", ".tmp"); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { try { Files.delete(tempFile); } catch (IOException e) { e.printStackTrace(); } } }); List<String> lines = Arrays.asList("Line1", "Line2"); Files.write(tempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE); System.out.printf("Wrote text to temporary file %s%n", tempFile.toString()); } private void createTempFileDeleteOnExit() throws IOException { Path tempFile = Files.createTempFile("tempfiles-delete-on-exit", ".tmp"); tempFile.toFile().deleteOnExit(); List<String> lines = Arrays.asList("Line1", "Line2"); Files.write(tempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE); System.out.printf("Wrote text to temporary file %s%n", tempFile.toString()); } private void createTempFileDeleteOnClose() throws IOException { Path tempFile = Files.createTempFile("tempfiles-delete-on-close", ".tmp"); List<String> lines = Arrays.asList("Line1", "Line2"); Files.write(tempFile, lines, Charset.defaultCharset(), StandardOpenOption.WRITE, StandardOpenOption.DELETE_ON_CLOSE); System.out.printf("Wrote text to temporary file %s%n", tempFile.toString()); } }